HTTP REQUEST SMUGGLING
HTTP REQUEST SMUGGLING Nedir Nasıl Test Edilir?
Bir web sitesinde http paketlerini sıklıkla görmekteyiz. Bir http paketi sunucuya gider ve o http paketinden yanıt gelene kadar herhangi bi http paketi gönderemeyiz (http 2 yapılındırılması farklı olduğundan http 1 veya 1.1 için geçerlidir.). Biz bu http paketini yollarken paketin içerisine bir http paket daha eklediğimizde ikinci eklediğimiz http paketi bir başka istek yapan kullanıcıya gönderilmesine neden olur. Yani yaptığımız http request smuggling saldırısı ile siteye istek yapan diğer kullanıcıların isteklerini manipüle edip kendi eklediğimiz isteği almasını sağlayabiliyoruz. Örnek istek:
POST /search HTTP/1.1
Host: zafiyetlisite.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 49
Transfer-Encoding: chunked
e
q=smuggling&x=
0
GET /404 HTTP/1.1
Foo: x
Bunun yanı sıra tespit aşamasında isteğe karşı savunmasız bir mekanizma varsa aşağıdaki gibi paket göndermemiz paketin geç dönmesiyle tespit yapmış olacağız.
POST / HTTP/1.1
Host: zafiyetlisite.com
Transfer-Encoding: chunked
Content-Length: 4
1
A
X
Şimdi PortSwigger üzerinde birkaç labaratuvar çözelim
Bu labaratuvarda http istek kaçırarak bir sonraki paketin GPOST şeklinde kullanıldığını görmemizi istiyor.
Şimdi Access the lab dedikten sonra ana sayfa yüklenirken gelen bu paket üzerinde oynamalar yapabiliriz.
Şekildeki gibi bu paketi 2 kere yolladığımızda karşımıza GPOST ile ilgili bir bilgi çıktı ilk labaratuvarı bu şekilde tamamlamış olduk. Burada önemli olan 0 girmemiz paketin sonlandığını düşünmesini sağlamasıdır.
Bir sonraki labaratuvarı inceleyelim:
Burada sunucunun sadece GET ve POST methodlarını kabul ettiğini bizim de http paket kaçırarak bir sonraki methodun GPOST kullanıyormuş gibi olduğunu göstermemiz gerekiyor.
Biz bu paketi manipüle ederek bir http paketi daha yollamaya çalışacağız.
Bu paketi 2 kere yolladığımızda aynı şekilde hata geliyor ve http request smuggling zafiyetini tespit etmiş oluyoruz.
Peki Gerçek Web Sitelerinde de Laboratuvarlardaki Gibi Çıkar Mı?
Evet bu mümkün bu güvenlik açığını çeşitli şekillerde kullanabiliriz örneğin xss veya oturum çalma gibi çeşitli zafiyetlere sonuç verebilir oldukça ciddi bir açık.
Aşağıda Birkaç Http Request Smuggling Örnek Raporlarını Bulabilirsiniz:
https://hackerone.com/reports/758445
https://hackerone.com/reports/498052
https://hackerone.com/reports/922597